One widely accepted system architecture for personal computers has been the Symmetric Multi-Processing (SMP) architecture. Symmetric Multi-Processing (SMP) computer architectures are known in the art as overcoming the limitations of single or uni-processors in terms of processing speed and transaction throughput, among other things. Typically, commercially available SMP systems are generally “shared memory” systems, characterized in that multiple processing elements on a bus, or a plurality of busses, share a single global memory. In shared memory multiprocessors, all memory is uniformly accessible to each processing element, which simplifies the task of dynamic load distribution. Processing of complex tasks can be distributed among various processing elements in the multiprocessor system while data used in the processing is substantially equally available to each of the processing elements undertaking any portion of the complex task. Similarly, programmers writing code for typical shared memory SMP systems do not need to be concerned with issues of data partitioning, as each of the processing elements has access to and shares the same, consistent global memory.
SMP systems typically run multiple processes or threads at a time where each process requires some amount of physical memory, i.e., a block of physical memory, in the shared memory. Since the amount of physical memory in the shared memory is limited, it must be allocated among the different processing elements. Typically, physical memory may be divided into pages where the pages are allocated to different processing elements. Physical memory that is so allocated may be referred to as mapped memory.
Each process that may be allocated a block of physical memory may further be provided with a set of translations for translating virtual addresses to assigned physical addresses of the allocated block. Each set of translations may be stored in what is commonly referred to as a page table. Page tables are typically stored in the shared memory.
Page tables are commonly indexed by virtual page numbers and include a Page Table Entry (PTE) for each virtual page address. If a virtual page is stored in the shared memory, then a corresponding PTE may include a physical address of the page. The PTE for a page may be identified by looking at an index that corresponds to the virtual page address.
When a process requests access to a particular virtual memory address, a page table that is associated with the process is searched for the requested virtual memory address. When the virtual address is found, the process may access the desired page using the physical address in the PTE that is associated with the virtual address.
Each processing element in the SMP computer architecture may comprise a processing unit. The processing unit may comprise a central processing unit, e.g., Power PC™, and an address translation mechanism such as a Translation Lookaside Buffer (TLB). A TLB may be used for storing a number of most recently used virtual memory address-to-physical memory address translations, i.e., PTE translations. When a processing unit retrieves a translation from the PTE in the shared memory, it typically stores the translation in an associated TLB. The processing unit may retrieve a translation from the TLB faster than from an associated cache or the shared memory.
Each processing element in the SMP computer architecture may further comprise a plurality of Attached Processing Units (APU's). In prior art SMP architectures, each APU may be structured to perform a particular task, e.g., image compression, image decompression, transformation, clipping, lighting, texturing, depth cueing, transparency processing, set-up, screen space rendering of graphics primitives, by the processing unit. That is, an APU may be configured to perform a particular operation, e.g., floating point calculation, vector calculation. For example, an APU may be a floating point unit configured to execute floating point operations on source operands. One of the advantages of an APU structurally configured to perform a particular operation is that the APU's do not have to perform address translation, i.e., mapping virtual addresses to physical addresses. By not performing address translation, APU's do not have to be structurally configured with an address translation mechanism, e.g., TLB, and thereby reduce the complexity of the APU's.
Unfortunately, APU's in prior art SMP computer architectures may not access the shared memory because APU's are not structurally configured with an address translation mechanism, e.g., TLB.
It would therefore be desirable to develop an SMP computer architecture where the APU's have restricted access to the shared memory without being structurally configured with an address translation mechanism. It would further be desirable to develop an SMP computer architecture where the APU's have more capabilities than prior art APU's, i.e., structured to perform a particular task. It would further be desirable to develop an SMP system where Translation Lookaside Buffer (TLB) consistency may be maintained by the processing units only.